ICTSC2018 本戦 問題解説: (焦がしにんにくのマー油と葱油が香る ザ★チャーハン )

問題文

MSPに管理を依頼している踏み台サーバから中にあるアプリケーションサーバに、公開鍵認証でログインできなくなってしまった。君たちの手元からアプリケーションサーバには疎通がなく、踏み台サーバーを経由してsshを行う必要がある。困ったことに、アプリケーションサーバのsshd_configにはパスワード認証を許可する設定がされていない。

どうやらログインできなくなる前が新入社員が踏み台サーバーでなんらかの作業を行っていたらしい、なんとかしてアプリケーションサーバにログインできるようにしてほしい。

社内ではログイン方法がマニュアル化されているため、かならず下記コマンドでログインができるようにしてほしい

ちなみに、管理を依頼している会社は怠け者集団で月曜日までは対応ができないとのことだ。

情報

踏み台サーバ (wow_bastion)

IPアドレス: 192.168.6.1 (踏み台), 192.168.6.129 (アプリケーションネットワーク) ユーザー: admin  パスワード: n0stack/n0stack

アプリケーションサーバ (wow_target)

IPアドレス: 192.168.6.130 ユーザー: admin  パスワード: なし (公開鍵認証)

目標サーバのadminユーザーには、 踏み台サーバの /home/admin/.ssh/id_ecdsa に対応する公開鍵が設置されている。

トラブルの概要

公開鍵認証を用いたsshを行うとき、ローカルの同名ファイル(id_ecdsaとid_ecdsa.pubなど)がキーペアになってない場合に、認証がスキップされてログインできない問題。

解説

この問題は、踏み台サーバから公開鍵認証を用いたsshログインができなくなるトラブルです。

LinuxのSSHクライアントから公開鍵認証で接続する際は、 -i で公開鍵を選択するか、 ~/.ssh の配下にあるファイルが読み込まれます。 ファイルが読み込まれた際に、秘密鍵の名前に加えて .pub がついたファイルが存在していた場合、そのファイルが秘密鍵とペアである公開鍵かのチェックが行われ、一致しなかった場合はログインが出来ないという問題があります。 また、この問題は .pub ファイルが存在しない場合には行われず、接続に成功します。

踏み台サーバの作業履歴をみるとホームディレクトリのtarballが展開されて、公開鍵が上書きされていることがわかります。

想定回答としては、ssh-keygen コマンドを用いて秘密鍵から公開鍵を再生成する事を想定しています。 ssh-keygen -y -f ~/.ssh/id_ecdsa > ~/.ssh/id_ecdsa.pub

それ以外にも、 .pub ファイルが存在しない場合に接続が成功することがあるため、当該ファイルを削除しても解決可能ですが、この問題の場合は一部減点をしています。 rm ~/.ssh/id_ecdsa.pub

回答例

お疲れ様です。解答を提出いたします。

ssh [email protected] -vvv で踏み台のid_ecdsaのオファーが途中でスキップされていることを確認しました。

history で ~/pubkey.tar.gz が展開された形跡があることを確認しました。

ssh-keygen -l -f ~/.ssh/id_ecdsa ssh-keygen -l -f ~/.ssh/id_ecdsa.pub でこの2つのファイルがキーペアになっていないことを確認しました。

mv ~/.ssh/id_ecdsa.pub ~/.ssh/id_ecdsa.pub.old のようなコマンドで展開された公開鍵のバックアップを取りました。

ssh-keygen -yf ~/.ssh/id_ecdsa > ~/.ssh/id_ecdsa.pub でキーペアになる公開鍵を生成しました。

ssh [email protected] でログインできることを確認しました。

採点基準

/home/admin/.ssh 内に配置されている id_ecdsa と id_ecdsa.pub がキーペアでなくなっていることに気づく: 50%

目標サーバに /home/admin/.ssh/id_ecdsa を用いでログインができる 100%

/home/admin/.ssh/id_ecdsa から公開鍵を生成していない場合は減点